Navigation Component এবং SafeArgs ব্যবহার

Mobile App Development - অ্যান্ড্রয়েড ডেভেলপমেন্ট (Android) - Android Jetpack এবং Architecture Components
246

Navigation Component এবং SafeArgs ব্যবহার

Navigation Component হল Android Jetpack এর একটি লাইব্রেরি, যা অ্যাপ্লিকেশনগুলিতে নেভিগেশন সহজ এবং কার্যকরভাবে ম্যানেজ করতে সাহায্য করে। এটি ফ্র্যাগমেন্ট এবং অ্যাক্টিভিটির মধ্যে সহজে নেভিগেশন পরিচালনা করে, নেভিগেশন গ্রাফ তৈরি করে এবং নেভিগেশন ট্রানজিশনগুলোকে আরও উন্নত করে। SafeArgs হল একটি প্লাগইন, যা Navigation Component এর সাথে কাজ করে এবং টাইপ-সেফ পদ্ধতিতে ডেটা পাস করার জন্য ব্যবহৃত হয়।


Navigation Component এর সুবিধা

  1. Simplifies Fragment Management: ফ্র্যাগমেন্ট ম্যানেজমেন্ট এবং ট্রানজিশনগুলোকে সহজ এবং সুসংগঠিত করে।
  2. Navigation Graph: XML ফাইলে নেভিগেশন গ্রাফ তৈরি করে, যা অ্যাপের বিভিন্ন ফ্র্যাগমেন্ট এবং তাদের সম্পর্ক সহজে বুঝতে সাহায্য করে।
  3. Lifecycle-Aware: নেভিগেশন লাইফসাইকেল ম্যানেজমেন্ট এবং ব্যাক স্ট্যাক হ্যান্ডলিং উন্নত করে।
  4. SafeArgs: টাইপ-সেফ ডেটা পাস করার জন্য SafeArgs ব্যবহার করা যায়, যা কোডে কম ত্রুটি সৃষ্টি করে এবং নিরাপদ নেভিগেশন নিশ্চিত করে।

উদাহরণ: Navigation Component এবং SafeArgs ব্যবহার করে Simple অ্যাপ তৈরি

নিচে একটি সিম্পল উদাহরণ দেওয়া হলো যেখানে Navigation Component এবং SafeArgs ব্যবহার করে একটি ফ্র্যাগমেন্ট থেকে আরেকটি ফ্র্যাগমেন্টে নেভিগেট করা হয়েছে এবং SafeArgs ব্যবহার করে ডেটা পাস করা হয়েছে।

ধাপ ১: Navigation Component এবং SafeArgs সেটআপ করা

প্রথমে আপনার প্রজেক্টে Navigation Component এবং SafeArgs প্লাগইন যোগ করুন।

১. Gradle সেটআপ:

build.gradle (Project level):

buildscript {
    dependencies {
        classpath "androidx.navigation:navigation-safe-args-gradle-plugin:2.6.0"
    }
}

build.gradle (Module level):

plugins {
    id 'androidx.navigation.safeargs'
}

dependencies {
    implementation "androidx.navigation:navigation-fragment-ktx:2.6.0"
    implementation "androidx.navigation:navigation-ui-ktx:2.6.0"
}

ধাপ ২: Navigation Graph তৈরি করা

একটি Navigation Graph তৈরি করুন, যা ফ্র্যাগমেন্টগুলির মধ্যে সম্পর্ক এবং নেভিগেশন পথ দেখায়।

  1. res ডিরেক্টরিতে navigation নামে একটি ডিরেক্টরি তৈরি করুন।
  2. nav_graph.xml ফাইল তৈরি করুন:
<?xml version="1.0" encoding="utf-8"?>
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    app:startDestination="@id/firstFragment">

    <fragment
        android:id="@+id/firstFragment"
        android:name="com.example.app.FirstFragment"
        android:label="First Fragment">
        <action
            android:id="@+id/action_firstFragment_to_secondFragment"
            app:destination="@id/secondFragment"
            app:enterAnim="@anim/slide_in_right"
            app:exitAnim="@anim/slide_out_left"/>
    </fragment>

    <fragment
        android:id="@+id/secondFragment"
        android:name="com.example.app.SecondFragment"
        android:label="Second Fragment">
        <argument
            android:name="message"
            app:argType="string"
            android:defaultValue="Hello from FirstFragment"/>
    </fragment>

</navigation>

ধাপ ৩: Fragment তৈরি করা

FirstFragment.java:

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.navigation.Navigation;
import com.example.app.databinding.FragmentFirstBinding;

public class FirstFragment extends Fragment {

    private FragmentFirstBinding binding;

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        binding = FragmentFirstBinding.inflate(inflater, container, false);

        binding.buttonNavigate.setOnClickListener(view -> {
            // SafeArgs ব্যবহার করে নেভিগেশন এবং ডেটা পাস করা
            FirstFragmentDirections.ActionFirstFragmentToSecondFragment action =
                    FirstFragmentDirections.actionFirstFragmentToSecondFragment("Hello, Second Fragment!");
            Navigation.findNavController(view).navigate(action);
        });

        return binding.getRoot();
    }
}

SecondFragment.java:

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.navigation.fragment.NavHostFragment;
import com.example.app.databinding.FragmentSecondBinding;

public class SecondFragment extends Fragment {

    private FragmentSecondBinding binding;

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        binding = FragmentSecondBinding.inflate(inflater, container, false);

        // SafeArgs ব্যবহার করে ডেটা গ্রহণ করা
        String message = SecondFragmentArgs.fromBundle(getArguments()).getMessage();
        binding.textViewMessage.setText(message);

        return binding.getRoot();
    }
}

ধাপ ৪: MainActivity এ Navigation Host সেটআপ করা

activity_main.xml:

<androidx.fragment.app.FragmentContainerView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/nav_host_fragment"
    android:name="androidx.navigation.fragment.NavHostFragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:navGraph="@navigation/nav_graph"
    app:defaultNavHost="true"/>

ধাপ ৫: Fragment Layout তৈরি করা

fragment_first.xml:

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="16dp"
    android:gravity="center">

    <Button
        android:id="@+id/buttonNavigate"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Go to Second Fragment"/>
</LinearLayout>

fragment_second.xml:

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="16dp"
    android:gravity="center">

    <TextView
        android:id="@+id/textViewMessage"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Message"/>
</LinearLayout>

কোডের ব্যাখ্যা:

  1. Navigation Graph: nav_graph.xml ফাইলে ফ্র্যাগমেন্ট এবং তাদের মধ্যে নেভিগেশন পথ এবং ডেটা পাস করার জন্য argument সংজ্ঞায়িত করা হয়েছে।
  2. SafeArgs: FirstFragment থেকে SecondFragment এ নেভিগেট করার সময় SafeArgs ব্যবহার করে একটি মেসেজ পাঠানো হয়েছে। SecondFragment এ SafeArgs ব্যবহার করে সেই মেসেজ রিসিভ করা হয়েছে।
  3. NavHostFragment: activity_main.xmlNavHostFragment সেটআপ করা হয়েছে, যা নেভিগেশন পরিচালনা করে।

SafeArgs এর সুবিধা

  • Type-Safe Navigation: SafeArgs টাইপ-সেফ ডেটা পাস নিশ্চিত করে, যাতে Compile Time এ ত্রুটি ধরা যায় এবং কোড নিরাপদ হয়।
  • Easy Navigation: SafeArgs ব্যবহার করে Fragment বা Activity এর মধ্যে সহজে এবং নিরাপদে ডেটা পাস করা যায়।
  • Arguments Management: SafeArgs Fragment বা Activity এর মধ্যে Argument ম্যানেজমেন্ট সহজ করে এবং কোড পরিষ্কার রাখে।

উপসংহার

Navigation Component এবং SafeArgs Android অ্যাপ্লিকেশনে নেভিগেশন ম্যানেজমেন্টকে সহজ এবং নিরাপদ করে। Navigation Component ব্যবহার করে আপনি একটি গ্রাফিকাল পদ্ধতিতে নেভিগেশন পরিচালনা করতে পারেন, যা Fragment বা Activity গুলোর মধ্যে সম্পর্ক স্পষ্ট করে। SafeArgs ব্যবহার করে Fragment বা Activity এর মধ্যে টাইপ-সেফ ডেটা পাস করা যায়, যা কোডের ত্রুটি কমিয়ে দেয় এবং অ্যাপ্লিকেশনকে আরও স্থিতিশীল এবং কার্যকরী করে তোলে।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...